package com.yupi.springbootinit.statemachine.core;

/**
 * 状态处理器接口
 * 用于处理状态转换前后的业务逻辑
 */
public interface StateProcessor<S extends State, E extends Event> {
    
    /**
     * 状态转换前处理
     * @param context 状态上下文
     * @return 是否允许继续转换
     */
    default boolean beforeTransition(StateContext context) {
        return true;
    }
    
    /**
     * 状态转换后处理
     * @param context 状态上下文
     */
    default void afterTransition(StateContext context) {
        // 默认空实现
    }
    
    /**
     * 状态转换失败处理
     * @param context 状态上下文
     * @param exception 异常信息
     */
    default void onTransitionError(StateContext context, Exception exception) {
        // 默认空实现
    }
    
    /**
     * 获取支持的状态类型
     * @return 状态类型
     */
    String getSupportedStateType();
}